package org.itydl.game.business

import org.itydl.game.model.View

/**
 * 具备攻击的能力：例如子弹
 */
interface Attackable : View {

    /**
     * 谁具备攻击能力，例如子弹具备攻击能力
     */
    val from: View

    /**
     * 攻击者具备攻击能力
     */
    val power: Int

    /**
     * 具备攻击的能力和遭受攻击能力物体是否发生碰撞
     * @param sufferable 跟哪个遭受攻击的物体发生碰撞
     */
    fun isCollection(sufferable: Sufferable): Boolean

    /**
     * 通知攻击者，谁被攻击了
     */
    fun notifyAttached(sufferable: Sufferable)
}